1. Field of the Invention
The present invention relates to the field of telecommunications systems and, more particularly to a flexible, runtime configurable, application program interface (API) that is command independent and reusable.
2. Description of the Related Art
Embedded software is software that is part of a larger system which is used to perform some of the operations of that system. Typically, the use of embedded software is transparent to the end user of the system containing the software.
Today, real-time embedded software is used in many products and devices particularly in the telecommunications and data access fields. The term embedded system will be used herein to refer to a system, device or product utilizing real-time embedded software. Real-time embedded software is typically used to interface the embedded system with numerous external devices. In most situations, the external devices will request the embedded system to perform a system operation by transmitting a command request message over an interface connected to the embedded system. Thus, the embedded software must be capable of responding to command requests received over a number of different external interfaces. In a telecommunications system, for example, these commands would be used for provisioning data, system configuration, fault, security and performance management as well as other system functions.
Typically, the real-time embedded software will include individual software applications that are used to perform the operations of the system (also collectively referred to herein as xe2x80x9csystem application softwarexe2x80x9d). Accordingly, when an external device requests that a system operation be performed, a software application corresponding to the requested operation will be invoked. A system capable of performing numerous operations will typically contain numerous software applications to carry out these operations.
A command router is one component of the real-time embedded software that is generally used as a gateway between the external interfaces and the system application software. That is, the command router serves as a common application program interface between the various external devices, and their unique communication protocols, and the system application software. The command router will be able to receive, interpret and route command requests from the external interfaces to the appropriate software application. In addition, the command router will be able to receive, interpret and route status and other information from the software applications over the appropriate external interfaces.
The external devices must know what operations are being implemented by the system. In addition, the external devices must know the command format and parameters required by the system application software to properly request the execution of an operation. The command router provides the path for communications between the external devices and application software and thus, the command router must know the number of external interfaces and software applications within the system and how to route the command requests and responses. Therefore, all of the commands, command parameters, software applications, external devices and the configuration of the command router must be known when the real-time embedded software is compiled. Any system changes, such as the altering of command parameters or the removal of an operation from the system, require the re-configuration and re-compiling of the embedded software. This is undesirable since it takes time to both re-compile and implement the new software into the system. Accordingly, there is a desire and need for a command router that may be re-configured without re-compiling the software.
As stated above, the system may be capable of performing numerous operations and thus, the external devices will be capable of commanding the execution of these operations. The command router would be required to know how to route each command request and its response. It would be desirable, however, if the command router were designed to provide an interface between the external devices and application software without specific knowledge of the number and content of the command requests and responses. That is, there is a desire and need for a command router providing communications between external devices and application software that is command independent.
The present invention provides an application program interface that may be re-configured without re-compiling the software used to implement the application program interface.
The present invention also provides an application program interface providing communications between external devices and application software that is command independent.
The above and other features and advantages of the invention are achieved by providing an application program interface capable of routing commands received from external devices to the appropriate system application that is runtime configurable. At runtime, the application program interface receives enrollment signals from external interface packages used to provide communications to the external devices and dynamically updates a first routing table. Additionally, at runtime, the application program interface receives enrollment signals from system application packages used to perform system commands and dynamically updates a second routing table. The routing tables are used to route command request and responses between the external interface and system application packages and thus, provides a communication interface between external devices and system application software. Since the routing tables are configured at runtime, the application program interface can be re-configured without re-compiling the software used to implement it. In addition, since the routing is performed without specific knowledge of the number and content of the command requests and responses, the application program interface provides communications between the external devices and system application software that is command independent.